<?php namespace Admin\Controller; 

//分类表
use Common\Model\Cate;

//类型表
use Common\Model\Type;

//分类控制器
class CateController extends CommonController{
//	成员属性，存储new 实例化
	
	private $cateModel;
	
	
	private $typeModel;
	
	//构造函数
	public function __init()
	{
//		实例化分类表
		$this -> cateModel = new Cate;
		
//		实例化类型表
		$this -> typeModel = new Type;
		
		parent::__init();
	}
	 
    //显示
    public function index(){
//		从数据库获得snshop_categroy表的数据，然后输出到前台 
//		orderBy('csort','DESC') 排序方式，要写
//		分页
//		$total = $this -> cateModel -> count();
//		2实例化分页//生成的是分配的分页模板
//		$page=Page::row(10)->make($total);
//		View::with('page',$page);
//		var_dump($page);die;
		$cateData = $this -> cateModel 
			->orderBy('sort','DESC') 
//			-> limit(Page::limit())
			-> get();
//		p($cateData);die;
//		var_dump($result);die;
//		如果获取某个表数据，实例化查询操作，不常用，可以实用db来操作，更方便更快

//		执行树桩处理，为了处理子分类
//		1.数据，2.分类名称
//		Data::tree($result,'cname') 两个参数必须有，Data::tree()  固定写法 
		$cateData = Data::tree($cateData,'cname');
//		var_dump($cateData);die;
//		执行完树状处理后，多出几个以 _ 开头的字段 '_name' => string '新闻' (length=6)  '_html' => string '' (length=0) '_level' => int 1
//		将 _html 分配到前台使用,当为子类，名称前自动添加杠

//		分配变量到前台
		View::with('cateData',$cateData);
    	View::make();
    }
	
	
//	添加分类
	public function add(){
		if(IS_POST){
//			var_dump($_POST);die;
//			将实例化的类过程存储到成员属性中去

//			执行验证
//			调用模型中的store添加
			$result = $this -> cateModel->store();
//			var_dump($this -> cateModel);die;
//			$this -> cateModel -> 
			if(!$result){
				View::error($this -> typeModel -> getError());
			}
			
			View::success('添加成功',U('index'));


		}
		
//		获取类型表的数据，然后分配到前台
		$typeData = $this -> typeModel -> get();
//		var_dump($typeData);die;
		View::with('typeData',$typeData);
		
		
		
		View::make();
	}




	
	
//	删除分类
	public function del(){
//		var_dump($_GET);die;
//		获取要删除的分类id
		$cid=Q('get.cid',0,'intval');
		
//		1获取要删除的分类的pid获取到
//		注意这里获取的是一个字段使用pluck
		$pid=$this -> cateModel->where('cid',$cid)->pluck('pid');
//		var_dump($pid);die;
//		2将它所有的子类的pid改变成要删除的父类的pid
//			查找父级id=2的数据就是分类2的子集
//			修改某一个字段参数update(array('pid'=>2));
		$data=array('pid'=>$pid);
		$this -> cateModel->where('pid',$cid)->update($data);
		
//		var_dump($cid);die;
//		删除指定分类
		$this -> cateModel->where('cid',$cid)->delete();
		
		View::success('删除成功',U('index'));
		
	}
	
	
	
//	编辑分类
	public function edit(){
//		echo 4;die;
		if(IS_POST){
//			var_dump($_POST);die;
//			将获得数据验证然后添加到数据表中
//		调用模型类的更新数据
		$result = $this -> cateModel ->edit();
		
		if(!$result){
//			$this -> cateModel -> getError() 获取模型中过滤失败的错误信息
			View::error($this -> cateModel -> getError());
		}
		
		View::success('编辑成功',U('index'));
		

		}
		
		
		
		
		
//		获得该条数据然后分配到前台
		$cid = Q('get.cid',0,'intval');
//		var_dump($cid);die;
		$oldData = $this -> cateModel -> where("cid",$cid) -> find();
//		var_dump($oldData);die;
//		分配数据
		View::with('oldData',$oldData);

//		查找当前标签的子集和本身，然后从总的里面剔除，将结果反出到前台的分类里面
//		getNoMy 使用的是模版数据处理层的方法
		$parentData = $this -> cateModel -> getNoMy($cid);
//		将数据进行树桩处理，更好看
		$parentData = Data::tree($parentData,'cname');
//		var_dump($parentData);die;
		
//		分配数据
		view::with('parentData',$parentData);


//		获取类型表的数据，然后分配到前台
		$typeData = $this -> typeModel -> get();
//		var_dump($typeData);die;
		View::with('typeData',$typeData);





		View::make();
	}
	
	
	
	
	
//	添加子类
	public function addSon(){
		
		if(IS_POST){
//			调用模版类就是数据层的数据进行处理
			$result = $this -> cateModel -> store();
			if(!$result){
				View::error('添加子类失败，请重新添加');
			}
			
			View::success('添加成功',U('index'));
			
		}
		
		
		
//		获取该类的父级id
		$cid = Q('get.cid',0,'intval');
//		查询数据
// 		field()查询字段,用括号包起来
		$parent = $this -> cateModel -> field('cid,cname') -> where('cid',$cid) -> find();
		
//		p($parent);die;
//		将数据分配到前台
		View::with('parent',$parent);
		
		
//		获取类型表的数据，然后分配到前台
		$typeData = $this -> typeModel -> get();
//		var_dump($typeData);die;
		View::with('typeData',$typeData);
		
		
		View::make();
		
		
		
		
		
		
		
		
		
		
	}
	
	
	
	

	
	
	
	
	
	
}
?>